/*
 * Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

package com.amazonaws.services.rekognition.model.transform;

import com.amazonaws.services.rekognition.model.*;
import com.amazonaws.util.DateUtils;
import com.amazonaws.util.json.AwsJsonWriter;

/**
 * JSON marshaller for POJO GeneralLabelsSettings
 */
class GeneralLabelsSettingsJsonMarshaller {

    public void marshall(GeneralLabelsSettings generalLabelsSettings, AwsJsonWriter jsonWriter)
            throws Exception {
        jsonWriter.beginObject();
        if (generalLabelsSettings.getLabelInclusionFilters() != null) {
            java.util.List<String> labelInclusionFilters = generalLabelsSettings
                    .getLabelInclusionFilters();
            jsonWriter.name("LabelInclusionFilters");
            jsonWriter.beginArray();
            for (String labelInclusionFiltersItem : labelInclusionFilters) {
                if (labelInclusionFiltersItem != null) {
                    jsonWriter.value(labelInclusionFiltersItem);
                }
            }
            jsonWriter.endArray();
        }
        if (generalLabelsSettings.getLabelExclusionFilters() != null) {
            java.util.List<String> labelExclusionFilters = generalLabelsSettings
                    .getLabelExclusionFilters();
            jsonWriter.name("LabelExclusionFilters");
            jsonWriter.beginArray();
            for (String labelExclusionFiltersItem : labelExclusionFilters) {
                if (labelExclusionFiltersItem != null) {
                    jsonWriter.value(labelExclusionFiltersItem);
                }
            }
            jsonWriter.endArray();
        }
        if (generalLabelsSettings.getLabelCategoryInclusionFilters() != null) {
            java.util.List<String> labelCategoryInclusionFilters = generalLabelsSettings
                    .getLabelCategoryInclusionFilters();
            jsonWriter.name("LabelCategoryInclusionFilters");
            jsonWriter.beginArray();
            for (String labelCategoryInclusionFiltersItem : labelCategoryInclusionFilters) {
                if (labelCategoryInclusionFiltersItem != null) {
                    jsonWriter.value(labelCategoryInclusionFiltersItem);
                }
            }
            jsonWriter.endArray();
        }
        if (generalLabelsSettings.getLabelCategoryExclusionFilters() != null) {
            java.util.List<String> labelCategoryExclusionFilters = generalLabelsSettings
                    .getLabelCategoryExclusionFilters();
            jsonWriter.name("LabelCategoryExclusionFilters");
            jsonWriter.beginArray();
            for (String labelCategoryExclusionFiltersItem : labelCategoryExclusionFilters) {
                if (labelCategoryExclusionFiltersItem != null) {
                    jsonWriter.value(labelCategoryExclusionFiltersItem);
                }
            }
            jsonWriter.endArray();
        }
        jsonWriter.endObject();
    }

    private static GeneralLabelsSettingsJsonMarshaller instance;

    public static GeneralLabelsSettingsJsonMarshaller getInstance() {
        if (instance == null)
            instance = new GeneralLabelsSettingsJsonMarshaller();
        return instance;
    }
}
